package com.hengpeng.itfinoss.service.repayment;

import java.util.List;

import com.hengpeng.common.exception.ServiceResult;
import com.hengpeng.itfinbase.persist.ReceivePlan;
import com.hengpeng.itfinbase.persist.RecoverRepay;
import com.hengpeng.itfinbase.persist.RepaymentPlan;

/**
 * <pre>
 * 还款追偿信息服务类
 * </pre>
 * @author weiyuan
 * @version 1.0, 2015年5月29日
 */
public interface RepaymentService
{
	/**
	 * <pre>
	 * 获取还款计划
	 * </pre>
	 * @param status 状态
	 * @param borrowUserName 借款人姓名
	 * @param beginDate 开始时间
	 * @param endDate 结束时间
	 * @return
	 */
	public ServiceResult<List<RepaymentPlan>> getRepaymentPlanList(int currentPage, int pageSize, String status,
			String borrowUserName,String borrowInfoName, String beginDate, String endDate);

	/**
	 * <pre>
	 * 获取追偿信息
	 * </pre>
	 * @param currentPage
	 * @param pageSize
	 * @param status 状态
	 * @param borrowUserName 借款人姓名
	 * @return
	 */
	public ServiceResult<List<RecoverRepay>> getRecoverRepayList(int currentPage, int pageSize,
			RecoverRepay.RecoverRepayStatus status, String borrowUserName);

	/**
	 * <pre>
	 * 获取收款信息
	 * </pre>
	 * @param borrowinfoId
	 * @param curRecNum
	 * @param status
	 * @return
	 */
	public List<ReceivePlan> getReceivePlans(Long borrowinfoId, Integer curRecNum, ReceivePlan.ReceiveStatus[] status);

	/**
	 * <pre>
	 * 获取还未执行完成的还款计划
	 * </pre>
	 * @param repaymentPlanId
	 * @param status
	 * @return
	 */
	public RepaymentPlan getUnRepaymentPlan(Long repaymentPlanId);

	/**
	 * <pre>
	 * 获取追偿信息
	 * </pre>
	 * @param id
	 * @param status
	 * @return
	 */
	public RecoverRepay getRecoverRepay(Long id, RecoverRepay.RecoverRepayStatus[] status);
}
